#pragma once
#include <cmath>

//>大气折射<Refraction> => 大气折射改正是天体视高度比真高度大时两者高度的差异。;

//  > 大气折射修正(Refraction Correction) =>
//  旧称“蒙气差”。由于地球周围大气的折射作用,观测者所看到的天体的方向与天体的真方向有差别,天体视高度比真高度大,两者高度的差异称为“大气折射改正”。
//                                          天体愈近地平,改正值愈大,在地平线时约为35',在天顶时为零。大气折射改正还随温度、气压而变化；

class Refraction
{
public:
    /**
     * @brief 修正天体位置，大气折射修正;
     *
     * @param height 高度;
     * @param isApparentHeight 是否是视高度{true = 视高度, false = 真高度};
     * @return double
     */
    static double Correction(const double height, const bool isApparentHeight)
    {
        if (isApparentHeight)
            return 0.0002967 / tan(height + 0.003138 / (height + 0.08919));
        else
            return -0.0002909 / tan(height + 0.002227 / (height + 0.07679));
    }
};